#include "EnemyFactory.hh"


// 所有小怪 All common enemies
const std::vector<Enemy>& getAllCommonEnemies() {
    // static 表示该变量在函数第一次被调用时初始化，之后所有调用都共用这一个实例。
    // 它只会初始化一次，并在整个程序运行期间保持不变。
    // 使用 static 可以避免每次调用函数时都重新创建这个敌人列表，提升性能。
    //
    // static means this variable is initialized only once when the function is first called.
    // All future calls will reuse the same instance.
    // It avoids recreating the list every time the function is called, improving efficiency.
    static std::vector<Enemy> allCommonEnemies = {
        {"Goblin", 80, 15, 5},
        {"Skeleton Archer", 90, 18, 8},
        {"Slime", 60, 10, 2},
        {"Bat", 70, 14, 4},
        {"Zombie", 80, 12, 5},
        {"Bandit", 75, 14, 8},
        {"Vampire Bat", 85, 17, 6},
        {"Fire Imp", 65, 12, 3},
        {"Giant Rat", 50, 8, 2}
    };
    return allCommonEnemies;
}

//所有精英怪 All elite enemies
const std::vector<Enemy>& getAllEliteEnemies(){
    static std::vector<Enemy> allEliteEnemies = {
        {"Orc Warrior", 120, 20, 10},
        {"Wolf", 100, 18, 6},
        {"Giant Spider", 110, 22, 12},
        {"Lizardman", 100, 18, 7},
        {"Dark Elf", 95, 20, 9},
        {"Witch", 90, 16, 10}
    };
    return allEliteEnemies;
}

// 最终Boss
Enemy getFinalBoss() {
    return Enemy("Demon King Azrael", 200, 35, 20);
}

